#include <iostream>
#include <deque>
using namespace std;

// 向双端队列中添加元素
void addElements(deque<double>& dq) {
    dq.push_back(10.5);
    dq.push_back(20.5);
    dq.push_front(5.5);
    cout << "元素已加入双端队列: 前端 5.5, 后端 10.5, 20.5" << endl;
}

// 移除双端队列的元素
void removeElements(deque<double>& dq) {
    if (!dq.empty()) {
        cout << "移除双端队列前端元素: " << dq.front() << endl;
        dq.pop_front();
    } else {
        cout << "双端队列为空，无法移除前端元素。" << endl;
    }

    if (!dq.empty()) {
        cout << "移除双端队列后端元素: " << dq.back() << endl;
        dq.pop_back();
    } else {
        cout << "双端队列为空，无法移除后端元素。" << endl;
    }
}

// 访问双端队列的元素
void accessElements(const deque<double>& dq) {
    if (!dq.empty()) {
        cout << "双端队列前端元素: " << dq.front() << endl;
        cout << "双端队列后端元素: " << dq.back() << endl;
    } else {
        cout << "双端队列为空，无法访问元素。" << endl;
    }
}

// 检查双端队列是否为空
void checkEmpty(const deque<double>& dq) {
    if (dq.empty()) {
        cout << "双端队列为空。" << endl;
    } else {
        cout << "双端队列不为空。" << endl;
    }
}

// 获取双端队列的大小
void checkSize(const deque<double>& dq) {
    cout << "双端队列的大小: " << dq.size() << endl;
}

int main() {
    deque<double> dq;

    // 调用函数向双端队列中添加元素
    addElements(dq);

    // 调用函数访问双端队列的元素
    accessElements(dq);

    // 调用函数检查双端队列是否为空
    checkEmpty(dq);

    // 调用函数获取双端队列的大小
    checkSize(dq);

    // 调用函数移除双端队列的元素
    removeElements(dq);

    // 再次检查双端队列的状态
    accessElements(dq);
    checkSize(dq);
    checkEmpty(dq);

    return 0; // 程序结束
}